#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
from socket import *

server = socket(AF_INET, SOCK_STREAM)
server.bind(("127.0.0.1", 19992))
server.listen(10)
server.setblocking(False)

conn_count = []  # 1、客户端每次建立的连接在重新循环之后都会被重新建立
while True:
    try:
        conn, addr = server.accept()
        conn_count.append(conn)
        print("当前共有{}个连接".format(len(conn_count)))
    except BlockingIOError:
        del_conn = []
        # 2、服务端非阻塞里会时刻盯着系统接收数据
        try:
            # 3、循环连接，当有数据时将它发送
            for conn in conn_count:
                try:
                    conn.send(conn.recv(1024))
                # 4、当客户端断开连接时，处理，不让服务端强迫关闭
                except ConnectionResetError:
                    del_conn.append(conn)
        # 2、每次try都会有BlockingIOError
        except BlockingIOError:
            pass

        for conn in del_conn:
            conn_count.remove(conn)
